Muestreo y Análisis de Datos - Universidad de Alicante
Dpto. de Fundamentos del Análisis Económico. Universidad de Alicante
Analizar datos suele implicar múltiples tablas
diferentes orígenes: ej., dptos. de empresa (personal, ventas, almacén)
almacenamiento más eficiente: elementos “similares” dentro de una tabla y diferentes entre ellas
Para poder combinar la información los datos deben ser relacionales: cada par de tablas están relacionadas mediante identificadores llamados claves
nycflights13 contiene varias tablas: el nombre de la compañía está “codificado” en flights y se puede encontrar en airlinescarrierTipos de claves:
Primaria (o interna): identifican de forma única cada observación en una tabla. Puede ser una sola variable (en planes) o múltiples (en weather)
Secundaria (o externa): señala a la clave primaria de otra tabla
Una clave primaria y una externa (asociada) en otra tabla forman una relación:
Operaciones que se pueden realizar con dos tablas: uniones de transformación, uniones de filtro y operaciones de conjunto
cbind() o bind_columns(): nuevas columnas para filas en el mismo ordenby: ¿Cómo se emparejan las tablas?flights y planesby = c("varX", "varY"): para usar sólo algunas variables comunesLas columnas con el mismo nombre (ej., año) se desambigúan con un sufijo
by = c("x1" = "y1", "x2" = "y2") para emparejar la variable x1 en la primera tabla con la variable y1 en la segunda, y la variable x2 con y2
inner_join(x, y) sólo incluye observaciones que coincidan en x y y.Cuando una fila no coincide en una unión externa, las nuevas variables se rellenan como valores ausentes
left_join(x, y): mantiene todas las observaciones en x, coincidan o no con la de y
right_join(x, y): mantiene todas las observaciones en y
full_join(x, y): incluye todas las observaciones de x e y
\(\hspace{0.5cm}\)
\(\hspace{0.5cm}\)
df1 %>% right_join(df2) es igual que df2 %>% left_join(df1), pero con diferente orden columnasFiltra las observaciones de la tabla de la izquierda basándose en si coinciden o no con una observación de la otra tabla
Se tiene un subconjunto de las filas de la tabla de la izquierda
anti_join() y semi_join()filter(), con tablas previamente resumidasyear, month, day)Trabajan con filas completas, comparando valores de cada variable.
Esperan que x e y tengan las mismas variables, y tratan las observaciones (filas) como elementos de un conjunto.
Útil cuando se quiere dividir un filtro complejo en piezas más simples.
df1 <- tibble(x = 1:2, y = c(1, 1))
df2 <- tibble(x = c(1,1), y = 1:2)
intersect(df1, df2) # solo filas tanto en df1 como en df2
union(df1, df2) # filas únicas en ambas tablas df1 y df2`
union_all(df1, df2) # todas las filas de df1 y df2, manteniendo duplicados
setdiff(df1, df2) # filas en df1, pero no en df2
setdiff(df2, df1)